package manager;

import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

import session.EnderecoSession;
import session.FuncionarioSession;
import session.NivelAcessoSession;
import session.TelefoneSession;
import entidade.Endereco;
import entidade.Funcionario;
import entidade.NivelAcesso;
import entidade.Telefone;

@Named
@RequestScoped
public class AtendenteManager {

	@EJB
	private FuncionarioSession fSession;

	@EJB
	private NivelAcessoSession naSession;

	@EJB
	private TelefoneSession tSession;

	@EJB
	private EnderecoSession eSession;

	private Funcionario func = new Funcionario();
	private Endereco endereco = new Endereco();
	private Telefone telefone = new Telefone();
	
	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public void save() {

		NivelAcesso nAcesso = naSession.findById(2);

		eSession.insert(endereco);
		tSession.insert(telefone);
		func.setEndereco(endereco);
		func.setTelefone(telefone);
		func.setNivelDeAutorizacao(nAcesso);
		fSession.insert(func);
		
		cleanAtributes();
	}
	
	public void cleanAtributes(){
		func = new Funcionario();
		endereco = new Endereco();
		telefone = new Telefone();
	}

	public void excluir(Funcionario funcionario) {
		fSession.delete(funcionario);
	}

	public void prepararUpdate(Funcionario func) {
		this.func = fSession.buscarPorLogin(func.getLogin());
		this.endereco = this.func.getEndereco();
	}

	public Funcionario getFunc() {
		return func;
	}

	public void setFunc(Funcionario func) {
		this.func = func;
	}
	public Telefone getTelefone() {
		return telefone;
	}

	public void setTelefone(Telefone telefone) {
		this.telefone = telefone;
	}
}